没错!你没有看错!
我来写那个让我讨厌至极的二分了!
二分真的很迷,有的时候必须用二分的地方看不出要用二分,然后就一片TLE
抱怨到这里,我们来讲讲二分的原理。
二分二分,顾名思义,就是将查找的区间分成两半,找中间的部分,然后判断查找左半边还是右半边。
很显然,二分有一个非常重要的条件:查找元素必须有序
不然就难以判断它到底往左找还是往右找
同时,要注意二分查找和二分答案在原理上相同,但二分查找用于查找元素,而二分答案更像是枚举算法的优化,在做题时不要搞错用哪一种。
那么,二分到底优秀在哪呢?
我们知道,评价一个算法,我们可以从时间复杂度和空间复杂度来判断
二分查找的空间复杂度: Θ(n) ,和一般算法相同
二分查找的时间复杂度: Θ(log22n) ,从这里就可以看出二分查找优秀了很多。
比如我们有105个元素,一般的方法在最坏情况下应查找105次,如果是二分的话,只需要 lo